package com.rc.web.mapper;

import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import com.rc.pojo.po.Consumer;

import java.math.BigDecimal;

import static com.rc.pojo.po.table.ConsumerTableDef.CONSUMER;

/**
 * 移动端游客用户表 映射层。
 * 提供游客用户相关的数据库操作接口
 */
public interface ConsumerMapper extends BaseMapper<Consumer> {

    /**
     * 根据微信openId查询用户
     * @param openId 微信openId
     * @return 用户实体
     */
    default Consumer selectByOpenId(String openId){
        return selectOneByQuery(QueryWrapper.create().eq(Consumer::getOpenId,openId));
    }

    /**
     * 扣除用户余额
     * @param id 用户ID
     * @param money 扣除金额
     */
    default void deductMoney(long id , BigDecimal money){
        UpdateChain.of(this)
                .set(CONSUMER.BALANCE, CONSUMER.BALANCE.subtract(money))
                .where(CONSUMER.ID.eq(id))
                .update();
    }
}
